home *** CD-ROM | disk | FTP | other *** search
/ Adobe Graphics & Publishing SDK 1996 December / Adobe Graphics & Publishing SDK 1996 December.iso / pc / pm65sdk / sourcecode / pclframe / common / main.cpp < prev   
C/C++ Source or Header  |  1996-10-08  |  4KB  |  163 lines

  1. /*
  2.  *--- Main.cp -------------------------------------------------
  3.  * Copyright (c) 1995 Adobe Systems, Inc.  All rights reserved.
  4.  *
  5.  * Copy this file to use as the starting point for your
  6.  * plug-in code using the PageMaker Class Library.
  7.  *
  8.  * You then need to edit two lines in this file, a #include
  9.  * statement to specify your plug-in class name, and a
  10.  * statement in the try{ } block in main() to create an
  11.  * instance of your plug-in class.
  12.  *
  13.  * See the comments below for more information about how
  14.  * to modify this file.  You may also wish to refer to
  15.  * the file PluginMain.c in the "Main RAG1" folder to
  16.  * understand how this main() module will be called when
  17.  * your plug-in is invoked by PageMaker.
  18.  *-------------------------------------------------------------
  19.  */
  20.  
  21. #include "PMPlugin.h"
  22.  
  23. #ifdef MACINTOSH
  24. #include <exception.h>
  25. #else
  26. #include <eh.h>
  27. #endif //MACINTOSH
  28.  
  29. #if __MWERKS__ && __MC68K__
  30. #include <A4Stuff.h>
  31. #include <SetupA4.h>
  32. #endif
  33.  
  34. #ifdef WINDOWS
  35. #include <Windows.h>
  36. #endif
  37.  
  38. #include "FramePlugin.h"        // Add your plug-in class' .h file here.
  39.                                 // It should be a subclass of PPluginCall
  40.                                 
  41. /* ---------------- Definitions ---------------- */
  42. #define SUCCESS            1
  43. #define FAILURE            0
  44. #define STAYINMEMORY    -1
  45.  
  46. /* ---------------- PageMaker (New)SDK include files ---------------- */
  47. #include "CIInterfaceManager.h"
  48. #include "PMEvent.h"
  49.  
  50. #include "PMEventRec.h"
  51. #include "CIBasic.h"
  52. #include "PMInterfaceIDs.h"
  53. #include "CICommandsAndQueries.h"
  54. #include "CIObjectAccess.h"
  55.  
  56. //--- Global variables ----------------------------------------
  57. sPMParamBlockPtr    gPB = NULL;    // Stores the current executing param block
  58. PMMessage *            gPMMessage = NULL;
  59.  
  60. #ifdef WINDOWS
  61.     PMHandle    hDllInstance;
  62. #endif //WINDOWS
  63.  
  64.  
  65. //--- Forward declarations ------------------------------------
  66. #ifdef powerc
  67.     #pragma export on
  68. #endif
  69. PMXErr main(PMMessage *pMsg);
  70. #ifdef powerc
  71.     #pragma export off
  72. #endif
  73.  
  74. #ifdef WINDOWS
  75.     BOOL WINAPI DllMain(HINSTANCE hInstance, ULONG ul_reason, LPVOID lpvReserved);
  76. #endif
  77.  
  78. void NiceUnexpected();
  79.  
  80. PMXErr main(PMMessage *pMsg)
  81. {
  82. #if __MWERKS__ && __MC68K__
  83.     long oldA4 = SetCurrentA4();
  84.     RememberA4();
  85. #endif
  86.  
  87.     CIInterfaceManager    *pIntfMgr = pMsg->pInterfaceMgr;
  88.     CICommandQuery        *pCmdQry = (CICommandQuery *)NULL;
  89.     
  90.     pIntfMgr->AcquirePMInterface(PMIID_CMDQRY,  (LPVOID *)&pCmdQry);
  91.  
  92.     pCmdQry->Retrieve(&gPB);
  93.     
  94.     gPMMessage = pMsg;
  95.     
  96.     PMErr rc = CQ_SUCCESS;
  97.     
  98.     set_unexpected(NiceUnexpected);
  99.  
  100.     try
  101.     {
  102.         FramePlugin theCall;
  103.         theCall.Dispatch();        // dispatch the call to your plug-in object
  104.         rc = CQ_SUCCESS;
  105.     }
  106.     catch (PMErr err)
  107.     {
  108.         rc = err;
  109.     }
  110.     catch (...)
  111.     {
  112.         rc = CQ_FAILURE;        // something weird goin' if we get here...
  113.     }
  114.  
  115.  
  116.     pIntfMgr->ReleasePMInterface( (LPVOID *)pCmdQry);
  117.  
  118. #if __MWERKS__ && __MC68K__
  119.     SetA4(oldA4);
  120. #endif
  121.  
  122.     return CQ_FAILURE;
  123. }
  124.  
  125. /*
  126.  *--- NiceUnexpected ------------------------------------------
  127.  * The default unexpected() exception handler calls terminate.
  128.  * This is not very friendly behavior for a plug-in, so this
  129.  * handler just throws a CQ_FAILURE.
  130.  *
  131.  * Note that the routines in the PageMaker Class Library
  132.  * should never throw an unexpected exception, so this is
  133.  * mostly to safeguard against exception handling errors that
  134.  * may be introduced in your code or other class libraries
  135.  * you use in your plug-in.
  136.  *-------------------------------------------------------------
  137.  */
  138. void NiceUnexpected()
  139. {
  140.     throw (PMErr)CQ_FAILURE;
  141. }
  142.  
  143. // end of Main.cp
  144.  
  145. #ifdef WINDOWS
  146. BOOL WINAPI DllMain(HINSTANCE hInstance, ULONG ul_reason, LPVOID lpvReserved)
  147. {
  148.     hDllInstance = hInstance;        /* save the Instance in a global var */
  149.  
  150.     switch(ul_reason)
  151.     {
  152.         case DLL_PROCESS_ATTACH:
  153.             break;
  154.         case DLL_THREAD_ATTACH:
  155.             break;
  156.         case DLL_THREAD_DETACH:
  157.             break;
  158.         case DLL_PROCESS_DETACH:
  159.             break;
  160.     }
  161.     return TRUE;
  162. }
  163. #endif //WINDOWS